package com.simple.framework.core.action.repository;

import com.simple.framework.core.action.Action;
import com.simple.framework.core.entry.ActionContext;
import com.simple.framework.core.entry.ActionResult;

/**
 * 事件执行存储接口
 * 
 * @author wujiangpo
 *
 */
public interface ActionRepository<R extends ActionResult, C extends ActionContext> {

	/**
	 * 事件执行前需要记录事件执行信息
	 */
	void beforeActionProcess(Action<R, C> action, C actionContext);

	/**
	 * 事件正常执行后需要更新事件执行信息
	 */
	void afterActionProcess(Action<R, C> action, C actionContext);

	/**
	 * 事件执行异常后需要更新事件执行信息
	 */
	void afterActionProcessException(Action<R, C> action, C actionContext, Exception e);
}
